﻿namespace DotNetStar.TheKing.Infrastructure
{
    /// <summary>
    /// 表示消息体系的基类。
    /// </summary>
    public abstract class NotificationBase : INotification
    {
        /// <summary>
        /// 初始化 <see cref="NotificationBase"/> 类的新实例。
        /// </summary>
        /// <param name="to">消息接收方。</param>
        /// <param name="content">消息的正文。</param>
        public NotificationBase(string to, string content)
        {
            this.To = to;
            this.Content = content;
        }

        /// <summary>
        /// 获取消息接收人的号码。手机号码/邮箱/UserId
        /// </summary>
        internal string To { get; }

        /// <summary>
        /// 获取发送消息的内容。
        /// </summary>
        internal string Content { get; }

        /// <summary>
        /// 获取或设置当前通知的参数对象。
        /// </summary>
        public object Parameter { get; set; }

        /// <summary>
        /// 由派生类重写，表示使用的消息发送方式。
        /// </summary>
        public abstract void Send();
    }
}
